/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Panel.java
 *
 * Created on 14-abr-2009, 19:01:56
 */

package brutot;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.lang.Math.*;
//import java.awt.Toolkit;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.awt.image.RescaleOp;
import java.awt.image.AffineTransformOp;
import java.awt.geom.AffineTransform;

import java.util.Map;
import java.util.HashMap;

import com.sun.image.codec.jpeg.JPEGImageDecoder;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Transparency;
import java.io.File;
import javax.imageio.ImageIO;
/**
 *
 * @author Scar
 */
public class Panel extends javax.swing.JPanel {
 Image photo;
 int altura;
 int amplaria;
 String Path;
 Graphics g;
    /** Creates new form Panel */
    public Panel() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
public static BufferedImage cargarImagen(String path){
    BufferedImage bimagen= null;
     try{
         bimagen=ImageIO.read(new File(path));

      
     }catch(Exception e){
    System.out.println("error imagen");
    }
    return bimagen;
}


public int diferenciaColor(Color c1,Color c2) {

    return ( java.lang.Math.max(c1.getRed(),c2.getRed()) -
             java.lang.Math.min(c1.getRed(),c2.getRed()) +
             java.lang.Math.max(c1.getGreen(),c2.getGreen()) -
             java.lang.Math.min(c1.getGreen(),c2.getGreen()) +
             java.lang.Math.max(c1.getBlue(),c2.getBlue()) -
             java.lang.Math.min(c1.getBlue(),c2.getBlue())
            );
}
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 744, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 501, Short.MAX_VALUE)
        );
    }// </editor-fold>//GEN-END:initComponents
    @Override
 public void paint(Graphics g) {
super.paint(g);
    
  //  if (!Path.equals(null)){
     


     BufferedImage imagen =cargarImagen(Path);


 //    Color c1=new Color(imagen.getRGB(20,29));
   
 //    Color c2=new Color(imagen.getRGB(20,300));

    
    /* for (int j=0;j<200;j++){
     for (int i=0; i<200;i++)
     {
         imagen.setRGB(i,j,colorin);
      
         colorin++;
     }
     }*/
   //  imagen.setRGB(20, 20, -1);
   
     g.drawImage(imagen,0,0,null);
     //System.out.println("altura despues"+altura);
     //System.out.println("amplaria despues"+amplaria);
     System.out.println("------------------------------------------------------------------");
     altura = imagen.getHeight();
     amplaria = imagen.getWidth();
     
     System.out.println("altura: "+altura);
     System.out.println("amplaria: "+amplaria);
     System.out.println("rellenar matriz color");
    

     Matriz m =new Matriz(imagen);


     System.out.println("calcular diferencias");

     int menorDiferencia = -1;
     int menorFila = -1;
     int mayorDiferencia = -1;
     int mayorFila = -1;
     int laterales[] = new int[altura];

     for (int y= 0; y<altura; y++)
     {
         for (int x=0; x<amplaria-1; x++){
             laterales[y]+= m.retornaContenido(1, x, y);
         }
         if ((laterales[y]<menorDiferencia)|(menorDiferencia == -1)){
             menorDiferencia = laterales[y];
             menorFila = y;
         }
         if (laterales[y]>mayorDiferencia){
            mayorDiferencia = laterales[y];
            mayorFila = y;
         }
     }

     System.out.println("imprimir diferencias");
     for (int y= 0; y<altura; y++)
     {
       System.out.println("Linea "+y+": "+laterales[y]);          
    }
     
    System.out.println("Valor menorDiferencia: "+menorDiferencia);
    System.out.println("Valor menorFila: "+menorFila);

    System.out.println("Valor mayorDiferencia: "+mayorDiferencia);
    System.out.println("Valor mayorFila: "+mayorFila);

    g.drawLine(0, menorFila, amplaria, menorFila);
    g.setColor(Color.red);
    g.drawLine(0, mayorFila, amplaria, mayorFila);


    //-----------------------------------------------------------

     menorDiferencia = -1;
     menorFila = -1;
     mayorDiferencia = -1;
     mayorFila = -1;
     int verticales[] = new int[amplaria];

     for (int x= 0; x<amplaria; x++)
     {
         for (int y=0; y<altura-1; y++){
             verticales[x]+= m.retornaContenido(3, x, y);
         }
         if ((verticales[x]<menorDiferencia)|(menorDiferencia == -1)){
             menorDiferencia = verticales[x];
             menorFila = x;
         }
         if (verticales[x]>mayorDiferencia){
            mayorDiferencia = verticales[x];
            mayorFila = x;
         }
     }


    System.out.println("Valor menorDiferencia: "+menorDiferencia);
    System.out.println("Valor menorFila: "+menorFila);

    System.out.println("Valor mayorDiferencia: "+mayorDiferencia);
    System.out.println("Valor mayorFila: "+mayorFila);
    g.setColor(Color.black);
    g.drawLine(menorFila,0 , menorFila, altura);
    g.setColor(Color.red);
    g.drawLine(mayorFila,0 , mayorFila, altura);

    
//}
}

public void calcular(int columna, int fila, int costeActual, int costeMinimo,int[] camino){
 //   if(costeActual + mDiferenciadDer[fila][columna+1]<costeMinimo){

    }




public void agafa_path_panel(String path){
        this.Path=path;
        System.out.println("frameimage path: "+ path);

    }
public int retornaAltura()
{
    return altura;
}
public int retornaAmplaria()
{
    return amplaria;
}
    // Variables declaration - do not modify//GEN-BEGIN:variables
    // End of variables declaration//GEN-END:variables

}
